#ifndef GRAYIMAGE_HPP
#define GRAYIMAGE_HPP

//------------------------------------------------------------------------------
// Fichier d'entête utilisés
//------------------------------------------------------------------------------
#include "Image.hpp"

namespace ImageAnalysis
{
//----------------------------------------------------------------------
// Cette classe correspond à une image codée en niveaux 
// de gris.
//----------------------------------------------------------------------
class GrayImage : public Image
{
public:
        //----------------------------------------------------------------------
        // Structure
        //----------------------------------------------------------------------

        //----------------------------------------------------------------------
        // Constructeur
        //----------------------------------------------------------------------
        GrayImage( int width, int height );

        //----------------------------------------------------------------------
        // Destructeur
        //----------------------------------------------------------------------
        virtual ~GrayImage();

        //----------------------------------------------------------------------
        // Permet de récupérer la valeur en niveaux de gris d'un
		// pixel de l'image.
		// Contrat : l'index doit correspondre à un pixel.
        //----------------------------------------------------------------------
        virtual unsigned char* GetPixel( int index );

        //----------------------------------------------------------------------
        // Cette méthode permet de fixer la valeur d'un pixel
		// en niveaux de gris dans l'image.
		// Contrat : le niveau de gris passé en paramètre doit être 
		// compris entre 0 et 255. L'index doit correspondre à un
		//pixel.
        //----------------------------------------------------------------------
        virtual void SetPixel( int index, unsigned char* value );

        //----------------------------------------------------------------------
        //Cette méthode permet de dessiner l'image
        //----------------------------------------------------------------------
        virtual void Draw();

private:
        //----------------------------------------------------------------------
        // Constructeur par copie et oprérateur d'affectation en privée pour
        // interdire leur utilisation
        //----------------------------------------------------------------------
        GrayImage( const GrayImage& copy);
        GrayImage& operator=( const GrayImage& copy );
};

}
#endif //GRAYIMAGE_HPP
